class Dog:

    def __init__(self, name='小白', age=12, color='白', sex='女'):  # 当我们创建对象时，自动会调用此方法  对象初始化
        self.name = name
        self.age = age
        self.color = color
        self.sex = sex
    def showInfo(self):
        print(f'我叫{self.name}，是一个{self.color}的{self.sex}性小狗，今年{self.age}岁')
    def __del__(self):
        print("我是对象销毁方法")
    def __str__(self):
        return f'我叫{self.name}，是一个{self.color}的{self.sex}性小狗，今年{self.age}岁'

"""
 __del__(self)：  销毁对象
              这个方法是自带的
              这个方法不需要调用，自动执行跟__init__一样  
              跟方法位置无关
              对象不调用方法的时候结束
              有几个对象就执行这个方法几遍
              一般情况下，我们不写这个方法  
              
  __str__(self)：    把我们的对象进行字符串化
                   方法里面的参数跟__del__(self)一样，只有self
                   必须有return
                   如果一个类中没有这个方法，我们打印对象是一个内存地址                     
"""
dog2 = Dog(age=12, color='黑色', sex='男')
print(dog2)
print(print(111))
# print(dog2)
# dog2.showInfo()
# dog3 = Dog(age=11, color='白色', sex='女')
# dog3.showInfo()


